﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using TagThisOrgProject.Models;

namespace TagThisOrgProject.Repository
{
    public class TagRepository
    {
        private TagContext Context { get; set; }
        public TagRepository(TagContext context)
        {
            this.Context = context;
        }
        internal Tag GetTag(string p)
        {
            var tag = (from t in this.Context.Tag
                       where t.Text == p
                       select t).FirstOrDefault();
            return tag;
        }
        internal IEnumerable<Tag> GetTags(params string[] tags)
        {
            return (from t in Context.Tag
                    where tags.Contains(t.Text)
                    select t);
        }
        internal Tag GetTag(Int64 id)
        {
            var tag = (from t in Context.Tag
                       where t.TagId == id
                       select t).FirstOrDefault();
            return tag;
        }
        internal Tag AddTag(string tag, bool isForSaving = true)
        {
            var t = GetTag(tag.ToLower());
            if (t == null)
            {
                t = Context.Tag.Add(new Tag { Text = tag.ToLower() });
                if (isForSaving)
                {
                    try
                    {
                        Context.SaveChanges();
                    }
                    catch
                    {
                        throw new Exception("Ошибка добавления в тега. Код 0004");
                    }
                }
            }
            return t;
        }
        internal IEnumerable<Tag> AddTags(params string[] tags)
        {
            var tgs = new List<Tag>();
            foreach (var t in tags)
            {
                tgs.Add(AddTag(t, false));
            }
            try
            {
                Context.SaveChanges();
            }
            catch
            {
                throw new Exception("Ошибка добавления в тегов. Код 0005");
            }

            return tgs;

        }
    }
}